# -*- coding: utf-8 -*-
from common import orm
from common.utils.types import Enum

BET_TYPE = Enum({
    "THREE_SUM": (1L, u"和值"),
    "THREE_SAME_SINGLE": (2L, u"三同号单选"),
    "THREE_SAME_ALL": (3L, u"三同号通选"),
    "TWO_SAME_SINGLE": (4L, u"二同号单选"),
    "TWO_SAME_MULTI": (5L, u"二同号复选"),
    "THREE_DIFF": (6L, u"三不同号"),
    "TWO_DIFF": (7L, u"二不同号"),
    "THREE_SEQ_ALL": (8L, u"三连号通选"),
    "ONE_ANY": (9L, u"猜一个号就中奖"),
    "PLATE_SUM_BSOE": (10L, u"总和"),  # 两面盘总和的大小单双
})


class Order(orm.Model):
    __tablename__ = "js_ks_order"
    id = orm.Column(orm.BigInteger, primary_key=True)
    user_id = orm.Column(orm.BigInteger)
    track_id = orm.Column(orm.BigInteger)  # 每次追号会产生一个ID，普通的为null
    type = orm.Column(orm.SmallInteger)  # 订单类型
    term = orm.Column(orm.VARCHAR)  # 期号
    bet_type = orm.Column(orm.Integer)  # 押宝方式，见上面的枚举
    unit = orm.Column(orm.FLOAT, default=2)  # 用户自选的每注金额
    number = orm.Column(orm.VARCHAR)  # 用户购买数据，格式和bet_type有关
    price = orm.Column(orm.FLOAT)  # 总价
    status = orm.Column(orm.Integer)  # 订单状态
    track_status = orm.Column(orm.Integer)  # 追号状态
    times = orm.Column(orm.Integer, default=1)  # 倍数
    win_price = orm.Column(orm.FLOAT, default=0)  # 中奖金额
    bonus = orm.Column(orm.FLOAT, default=0)
    extend = orm.Column(orm.TEXT)
    created_at = orm.Column(orm.DATETIME)
    updated_at = orm.Column(orm.DATETIME)


# 描述及排序
BET_TYPE_DESC = (
    (BET_TYPE.THREE_SUM, u"猜开奖号码相加的和"),
    (BET_TYPE.THREE_SAME_SINGLE, u"猜豹子号（3个号相同），开出指定豹子即中奖<font color=#ff00000>240%s</font>元"),
    (BET_TYPE.THREE_SAME_ALL, u"猜豹子号（3个号相同），开出任一豹子即中奖<font color=#ff00000>40%s</font>元"),
    (BET_TYPE.THREE_DIFF, u"猜<font color=#ff00000>3</font>个不同号码，与开奖号码相同（顺序不限）即中奖<font color=#ff00000>40%s</font>元"),
    (BET_TYPE.THREE_SEQ_ALL, u"猜顺子号（3个号相连），123/234/345/456任一开出即中奖<font color=#ff00000>10%s</font>元"),
    (BET_TYPE.TWO_SAME_SINGLE, u"猜中同号和不同号的组合（顺序不限）即中奖<font color=#ff00000>80%s</font>元"),
    (BET_TYPE.TWO_SAME_MULTI, u"猜对子号（2个号相同），开出指定对子号即中奖<font color=#ff00000>15%s</font>元"),
    (BET_TYPE.TWO_DIFF, u"猜2个不同号码，猜中开奖号码任意2位（顺序不限）即中奖<font color=#ff00000>8%s</font>元"),
    (BET_TYPE.ONE_ANY, u"猜中开奖号任意一个号码即中奖<font color=#ff00000>3%s</font>元"),
)


def get_available_bet_type():
    _list = []
    for index, (bet_type, desc) in enumerate(BET_TYPE_DESC):
        _list.append({
            "id": index + 1,
            "title": BET_TYPE.get_label(bet_type),
            "play_id": bet_type,
            "des": desc,
            "rule": "",
            "support": 1
        })
    return _list


BET_TYPE_DESC_V3 = (
    (BET_TYPE.THREE_SUM, u"猜开奖号码相加的和"),
    (BET_TYPE.PLATE_SUM_BSOE, u"开奖的3个数字和值11-18为大，3-10为小，单双为单，双数为双"),
    (BET_TYPE.THREE_SAME_SINGLE, u"猜豹子号（3个号相同），开出指定豹子即中奖"),
    (BET_TYPE.THREE_SAME_ALL, u"猜豹子号（3个号相同），开出任一豹子即中奖"),
    (BET_TYPE.TWO_SAME_SINGLE, u"猜中同号和不同号的组合（顺序不限）即中奖"),
    (BET_TYPE.TWO_SAME_MULTI, u"猜对子号（2个号相同），开出指定对子号即中奖"),
    (BET_TYPE.THREE_DIFF, u"猜3个不同号码，与开奖号码相同（顺序不限）即中奖"),
    (BET_TYPE.TWO_DIFF, u"猜2个不同号码，猜中开奖号码任意2位（顺序不限）即中奖"),
    (BET_TYPE.THREE_SEQ_ALL, u"猜顺子号（3个号相连），123/234/345/456任一开出即中奖"),
    (BET_TYPE.ONE_ANY, u"猜中开奖号任意一个号码即中奖"),

)

BET_TYPE_DESC_V4 = {
    BET_TYPE.THREE_SUM: u"猜开奖号码相加的和",
    BET_TYPE.THREE_SAME_SINGLE: u"猜豹子号（3个号相同），开出指定豹子即中奖",
    BET_TYPE.THREE_SAME_ALL: u"猜豹子号（3个号相同），开出任一豹子即中奖",
    BET_TYPE.TWO_SAME_SINGLE: u"猜中同号和不同号的组合（顺序不限）即中奖",
    BET_TYPE.TWO_SAME_MULTI: u"猜对子号（2个号相同），开出指定对子号即中奖",
    BET_TYPE.THREE_DIFF: u"猜3个不同号码，与开奖号码相同（顺序不限）即中奖",
    BET_TYPE.TWO_DIFF: u"猜2个不同号码，猜中开奖号码任意2位（顺序不限）即中奖",
    BET_TYPE.THREE_SEQ_ALL: u"猜顺子号（3个号相连），123/234/345/456任一开出即中奖",
    BET_TYPE.ONE_ANY: u"猜中开奖号任意一个号码即中奖",
    BET_TYPE.PLATE_SUM_BSOE: u"开奖的3个数字和值11-18为大，3-10为小，单双为单，双数为双",
}

KS_BET_CATEGORY = Enum({
    'PLATE': (6L, u'两面盘'),
    'SUM': (1L, u'和值'),
    'THREE_SAME': (2L, u'三同号'),
    'TWO_SAME': (3L, u'二同号'),
    'THREE_DIFFERENT': (4L, u'三不同号'),
    'ONE': (5L, u'猜一个号'),
})

KS_BET_CATEGORY_TYPE = [
    (KS_BET_CATEGORY.SUM, [BET_TYPE.THREE_SUM, ]),
    (KS_BET_CATEGORY.PLATE, [BET_TYPE.PLATE_SUM_BSOE, ]),
    (KS_BET_CATEGORY.THREE_SAME, [BET_TYPE.THREE_SAME_SINGLE, BET_TYPE.THREE_SAME_ALL]),
    (KS_BET_CATEGORY.TWO_SAME, [BET_TYPE.TWO_SAME_SINGLE, BET_TYPE.TWO_SAME_MULTI]),
    (KS_BET_CATEGORY.THREE_DIFFERENT, [BET_TYPE.THREE_DIFF, BET_TYPE.THREE_SEQ_ALL]),
    (KS_BET_CATEGORY.ONE, [BET_TYPE.ONE_ANY, ]),
]


def get_available_bet_type_v3():
    _list = []
    for index, (bet_type, desc) in enumerate(BET_TYPE_DESC_V3):
        _list.append({
            "id": index + 1,
            "title": BET_TYPE.get_label(bet_type),
            "play_id": bet_type,
            "des": desc,
            "rule": "",
            "support": 1
        })
    return _list


def get_available_bet_type_v4(cvc=1):
    _list = []
    for category, bet_types in KS_BET_CATEGORY_TYPE:
        if int(cvc) < 23 and category == KS_BET_CATEGORY.PLATE:
                continue
        type_list = []
        _id = 1
        for bet_type in bet_types:
            type_list.append({
                'id': _id,
                'title': BET_TYPE.get_label(bet_type),
                'play_id': bet_type,
                'des': BET_TYPE_DESC_V4[bet_type],
                'rule': '',
                'support': 1
            })
            _id += 1
        data = {
            'id': category,
            'title': KS_BET_CATEGORY.get_label(category),
            'support': 1,
            'list': type_list
        }
        _list.append(data)
    return _list
